#include <iostream>
#include <thread>
#include <future>

using namespace std;
//通过在线程中对promise对象设置执行结果，其它线程通过future获取结果
void Add(int num1, int num2, std::promise<int> &prom)
{
    this_thread::sleep_for(chrono::seconds(1));
    cout << "Add" << endl;
    prom.set_value(num1 + num2);
}

int main()
{
    std::promise<int> prom;
    std::future<int> fut = prom.get_future();
    std::thread th(Add, 11, 22, std::ref(prom));

    int sum = fut.get();//同步控制(阻塞)：只有prom被设置了结果，get才能获取结果
    cout << "sum:" << sum << endl;

    th.join();
    return 0;
}